/*
 * server_thread.h
 *
 *  Created on: 2009-12-21
 *      Author: karool
 */

#ifndef SERVER_THREAD_H_
#define SERVER_THREAD_H_

#include "Log.h"
#include "thread.h"
#include "connection.h"
#include "messages.h"
#include <ctime>

// prototyp
class Server;

/**
 * Watek serwera obslugujacy pojedyncze polaczenie.
 */
class ServerThread : public Thread
{
	// zaprzyjazniony z serwerem
	friend class Server;

	/**
	 * Serwer na rzecz ktorego dziala watek.
	 */
	Server *_server;

	/**
	 * Polaczenie.
	 */
	Connection *_conn;

	/**
	 * Nazwa polaczenia.
	 */
	String _name;

	/**
	 * Niedozwolony konstruktor domy�lny
	 */
	ServerThread();

	/**
	 * Uruchom watek serwera.
	 * Watek odbiera wiadomosci i wykonuje je na serwerze.
	 * W razie potrzeby wysyla komunikaty zwrotne.
	 */
	void _run(void);

public:
	/**
	 * Utworz nowy watek serwera.
	 * @param server serwer na rzecz ktorego dziala watek.
	 * @param conn polaczenie z klientem.
	 */
	ServerThread(Server* server, Connection *conn);

	/**
	 * Usun watek.
	 */
	virtual ~ServerThread();
};

#endif // SERVER_THREAD_H_
